package com.liu.mybatisplus.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.liu.mybatisplus.enums.SexEnum;
import lombok.Data;

import java.util.List;

/**
 * 常用注解
 * @TableName
 * @TableId
 *      IdType.ASSIGN_ID（默认）基于雪花算法的策略生成数据id，与数据库id是否设置自增无关
 *      IdType.AUTO  使用数据库的自增策略，注意，该类型请确保数据库设置了id自增，
 * @TbaleField 别名
 * @TableLogic 逻辑删除
 * @Version 乐观锁
 */

@Data
@TableName(value = "t_user",autoResultMap = true)
//@TableName(value = "t_user")
public class User {

    @TableId(type = IdType.ASSIGN_UUID) // UUID
    private String id;

    // 别名
    @TableField("user_name")
    private String name;

    private Integer age;

    // 枚举，将注解所标识的属性的值存储到数据库中
    private SexEnum sex;

    // 逻辑删除
    @TableLogic
    private int isDeleted;

    // 乐观锁
    @Version
    private Integer version;


    // 忽略这个字段
    @TableField(exist = false)
    List<Device> devices;

    // 类型转换器
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private List<String> typeHandler;
}
